It is desirable to distribute the processing load among multiple computers and processors in a computer network. The function of distributing the processing load among the multiple computers and processors in the network is often referred to as dynamic load balancing or processor assignment. Load balancing is frequently based on processor efficiency, reliability and usage.
An example of load balancing for one computer is disclosed in U.S. Pat. No. 5,675,797 where resources are initially allocated into buffer pools. To enhance system performance, buffer pool resources are reallocated based on a performance index. For example, the buffer pool with the largest performance index is allocated additional resources and the buffer pool with the smallest performance loses some of its resources.
Another way of load balancing or allocating system resources in a computer network is disclosed in U.S. Pat. No. 5,513,354 in which network processors exchange views as to which pending tasks have or have not been completed. The network processors reach a consensus as to the overall state of completion of the pending tasks and reallocate computer network resources based on the consensus reached.
Yet another method is disclosed in U.S. Pat. No. 5,522,070 in which a scheduler allocates computer resources on a network to a plurality of processes. Assuming that the amount of computer resources for processing each of the plurality of processes is known, and the amount of available resources on each computer in the network is known, the scheduler allots the process having the largest amount of processing to a computer having the largest amount of available resources. The scheduler then allots the process having the second largest amount of processing to a computer having the second largest amount of available resources and so forth. None of the foregoing patents ensure that a particular process will have the minimum required resources.
Although these allocating systems reallocate computer and/or network resources to achieve maximum efficiency and utilization of computers and processors, situations occur where a high priority process or group of processes require a minimum amount of network resources. For example, if one of the computers on a computer network fails, and a network server redistributes the processing load among the remaining network computers, this high priority process or group of processes may not have sufficient network resources allocated to either run on the network, or run efficiently. Meanwhile, a lower priority process may have network resources automatically reallocated thereto by known prior art allocating systems, which should more preferably be reallocated to the high priority process or group of processes. None of the allocating systems known to the inventors provide a minimum amount of network resources for a process or group of processes. Therefore, a need exists for a method and apparatus for allocating and switching network resources based on dynamic workload changes in which processes or groups of processes having high priority are allocated a minimum amount of required network resources.